﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLXuongCNTT.Object;
using QLXuongCNTT.ControlLayers;

namespace QLXuongCNTT
{
    public partial class frmNhap : Form
    {
        public frmNhap()
        {
            InitializeComponent();
        }
        
        ctrPhieunhap phieunhap_ctr = new ctrPhieunhap();
        ctrlGiaovien giaovien_ctr = new ctrlGiaovien();
        ctrlVTTB vattu_ctr = new ctrlVTTB();
        bool sua = false;
        private void btnLuuPN_Click(object sender, EventArgs e)
        {
            if (sua == true)
            {
                setPhieunhap();
                phieunhap_ctr.UpdatePN();
                if (phieunhap_ctr.Error != "")
                {
                    if(phieunhap_ctr.Error.Contains("PK"))
                        MessageBox.Show(this,"Không được sửa số phiếu!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    else
                        MessageBox.Show(this, phieunhap_ctr.Error, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show(this, "Đã cập nhật phiếu nhập thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    DisabledControl();
                    vattu_ctr.DanhSach_VTTB(dtgrdChitiet, bindingSource1);
                }
                sua = false;
            }
            else
            {

                if (txtSophieu.Text == "")
                    MessageBox.Show(this, "Số phiếu không được rỗng!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    phieunhap_ctr.Error = "";
                    setPhieunhap();
                    phieunhap_ctr.insertPhieunhap();
                    if (!phieunhap_ctr.Error.Equals(""))
                    {
                        if (phieunhap_ctr.Error.Contains("PK"))
                            MessageBox.Show(this, "Trùng số phiếu nhập!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        else
                            MessageBox.Show(phieunhap_ctr.Error);
                    }
                    else
                    {
                        MessageBox.Show(this, "Đã thêm phiếu nhập thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        DisabledControl();
                        treeView1.Nodes.Clear();
                        phieunhap_ctr.getPhieunhap(treeView1);
                        vattu_ctr.Vattu.Phieunhap = txtSophieu.Text;
                        vattu_ctr.DanhSach_VTTB(dtgrdChitiet, bindingSource1);

                    }
                }
            }
        }

        private void frmNhap_Load(object sender, EventArgs e)
        {
            cmbNguoinhan.DataSource = giaovien_ctr.getGiaovien();
            cmbNguoinhan.DisplayMember = "TenGV";
            cmbNguoinhan.ValueMember = "MaGV";
            if (!giaovien_ctr.Error.Equals(""))
                MessageBox.Show(giaovien_ctr.Error);
            phieunhap_ctr.getPhieunhap(treeView1);
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (treeView1.SelectedNode.Tag !=null)
            {

                phieunhap_ctr.Phieunhap.Sophieu = treeView1.SelectedNode.Tag.ToString();
                //phieunhap_ctr.DanhSach_VTTB(dtgrdChitiet);
                
                DataTable dt = phieunhap_ctr.THONGTIN_PN();
                int sd = dt.Rows.Count;
                
                txtSophieu.Text = dt.Rows[0]["sophieu"].ToString();
                dtNgaynhap.Text = dt.Rows[0]["ngay"].ToString();
                cmbNguoinhan.SelectedValue = dt.Rows[0]["nguoinhan"].ToString();
                txtDonvi.Text = dt.Rows[0]["donvi"].ToString();
                txtLydo.Text = dt.Rows[0]["lydo"].ToString();
                txtNoixuat.Text = dt.Rows[0]["noixuat"].ToString();
                //load chi tiet phieu nhap
                vattu_ctr.Vattu.Phieunhap = txtSophieu.Text;
                dtgrdChitiet.AutoGenerateColumns = false;
                vattu_ctr.DanhSach_VTTB(dtgrdChitiet,bindingSource1);
                btnXoaPN.Enabled = true;
                btnSuaPN.Enabled = true;
                if (dtgrdChitiet.Rows.Count > 0)
                {
                    toolStripbtnLuu.Enabled = true;
                    bindingNavigatorDeleteItem.Enabled = true;
                }
                else
                {
                    toolStripbtnLuu.Enabled = false;
                    bindingNavigatorDeleteItem.Enabled = false;
                }
            }
        }
        private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
        {

            if (txtSophieu.Text == "")
            {
                MessageBox.Show(this, "Bạn chưa chọn phiếu nhập!", "Lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    vattu_ctr.Vattu.Phieunhap = txtSophieu.Text;
                    //vattu_ctr.Vattu.Maso = null;
                    vattu_ctr.addVTTB();
                    bindingNavigator1.BindingSource.MoveLast();
                    toolStripbtnLuu.Enabled = true;
                    bindingNavigatorDeleteItem.Enabled = true;
                    
                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this,ex.Message,"Lỗi!",MessageBoxButtons.OK,MessageBoxIcon.Error);
                }
            }
            
        }

        private void toolStripbtnLuu_Click(object sender, EventArgs e)
        {
           bindingNavigatorPositionItem.Focus();
           if (vattu_ctr.save() == true)
               MessageBox.Show(this, "Bạn đã lưu những thay đổi thành công!", "xác nhận", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            
        }

     
        private void btnHuyPn_Click(object sender, EventArgs e)
        {
            ClearControl();
            DisabledControl();
            btnSuaPN.Enabled = false;
            btnXoaPN.Enabled = false;
        }
        public void ClearControl()
        {
            txtSophieu.Text = "";
            txtDonvi.Text = "";
            txtLydo.Text = "";
            txtNoixuat.Text = "";
            cmbNguoinhan.SelectedIndex = 0;
            dtNgaynhap.Value = DateTime.Today;
        }

        private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
        {
            DialogResult rs = MessageBox.Show(this, "Bạn có chắc muốn xóa vật tư " + dtgrdChitiet.CurrentRow.Cells[0].Value.ToString() + " không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rs == DialogResult.Yes)
            {
                bindingNavigator1.BindingSource.RemoveCurrent();
            }
        }
        private void dtgrdChitiet_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            DialogResult rs = MessageBox.Show(this, "Bạn có chắc muốn xóa vật tư " + dtgrdChitiet.CurrentRow.Cells[0].Value.ToString() + " không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rs == DialogResult.No)
            {
                e.Cancel = true;
            }
        }

        private void btnXoaPN_Click(object sender, EventArgs e)
        {
            phieunhap_ctr.Error = "";
            DialogResult rs = MessageBox.Show(this, "Bạn có chắc muốn xóa phiếu nhập " + txtSophieu.Text + " không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rs == DialogResult.Yes)
            {
                phieunhap_ctr.Phieunhap.Sophieu = txtSophieu.Text;
                phieunhap_ctr.DeletePN();
                if (phieunhap_ctr.Error != "")
                {
                    if (phieunhap_ctr.Error.Contains("FK"))
                    {
                        DialogResult rss = MessageBox.Show(this, "Phiếu nhập có chứa vật tư, xóa phiếu nhập này sẽ xóa các vật tư trong phiếu nhập, bạn có chắc muốn xóa không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (rss == DialogResult.Yes)
                        {
                            vattu_ctr.Vattu.Phieunhap = txtSophieu.Text;
                            vattu_ctr.DeleteVT();
                            if (vattu_ctr.Error != "")
                            {
                                MessageBox.Show(this, phieunhap_ctr.Error, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                phieunhap_ctr.DeletePN();
                                MessageBox.Show(this, "Đã xóa thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                                ClearControl();
                                treeView1.Nodes.Clear();
                                phieunhap_ctr.getPhieunhap(treeView1);
                                vattu_ctr.DanhSach_VTTB(dtgrdChitiet, bindingSource1);
                            }
                        }
                    }
                    else
                        MessageBox.Show(this, phieunhap_ctr.Error, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show(this, "Đã xóa thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    ClearControl();
                    DisabledControl();
                    btnXoaPN.Enabled = false;
                    btnSuaPN.Enabled = false;
                    treeView1.Nodes.Clear();
                    phieunhap_ctr.getPhieunhap(treeView1);
                    vattu_ctr.DanhSach_VTTB(dtgrdChitiet, bindingSource1);

                }
            }         
        }
        private void btnTaoPN_Click(object sender, EventArgs e)
        {
            EnabledControl();
        }
        public void EnabledControl()
        {
            txtSophieu.Enabled = true;
            txtDonvi.Enabled = true;
            txtLydo.Enabled = true;
            txtNoixuat.Enabled = true;
            cmbNguoinhan.Enabled = true;
            dtNgaynhap.Enabled = true;
            btnLuuPN.Enabled = true;
            btnHuyPn.Enabled = true;
            if (dtgrdChitiet.Rows.Count > 0)
            {
                toolStripbtnLuu.Enabled = true;
                bindingNavigatorDeleteItem.Enabled = true;
            }
            else
            {
                toolStripbtnLuu.Enabled = false;
                bindingNavigatorDeleteItem.Enabled = false;
            }
        }
        public void DisabledControl()
        {
            txtSophieu.Enabled = false;
            txtDonvi.Enabled = false;
            txtLydo.Enabled = false;
            txtNoixuat.Enabled = false;
            cmbNguoinhan.Enabled = false;
            dtNgaynhap.Enabled = false;
            btnLuuPN.Enabled = false;
            btnHuyPn.Enabled = false;
        }
        private void btnDong_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnSuaPN_Click(object sender, EventArgs e)
        {

            EnabledControl();
            txtSophieu.Enabled = false;
            sua = true;
        }
        public void setPhieunhap()
        {
            phieunhap_ctr.Phieunhap.Sophieu = txtSophieu.Text;
            phieunhap_ctr.Phieunhap.Ngaynhap = dtNgaynhap.Value.ToString();
            phieunhap_ctr.Phieunhap.Nguoinhan = cmbNguoinhan.SelectedValue.ToString();
            phieunhap_ctr.Phieunhap.Donvi = txtDonvi.Text;
            phieunhap_ctr.Phieunhap.Lydo = txtLydo.Text;
            phieunhap_ctr.Phieunhap.Noixuat = txtNoixuat.Text;
        }

        private void buttonX1_Click(object sender, EventArgs e)
        {
            frmGiaovien giaovien = new frmGiaovien();
            giaovien.ShowDialog();
        }

        private void ribbonBar1_ItemClick(object sender, EventArgs e)
        {

        }

      

    }
}
